<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
<h:head>

	<style type="text/css">
.ui-layout-north {
	z-index: 20 !important;
	overflow: visible !important;;
}

.ui-layout-north .ui-layout-unit-content {
	overflow: visible !important;
}

.ui-widget {
	font-size: 10px !important;
}

.size {
	width: 800px;
	position: relative;
	left: 22%;
	top: 10%;
}

.tabela {
	width: 750px;
}
</style>
	<link rel="icon" type="image/x-icon"
		href="https://a.staticimageserver.com/img/favicon.ico" />
	<title>Cadastro de Cliente</title>
</h:head>

<h:body>
	<p:growl id="growl" life="3000" autoUpdate="true" />

	<ui:decorate template="/templateBase.xhtml">

		<ui:define name="center">

			<h:form prependId="true" id="formCadastro">
				<p:hotkey bind="f4" oncomplete="dlg.show()"
					actionListener="#{pessoaBacking.carregarPessoas}"
					update=":formPesquisa:tabelaPessoa" upprocess="@all"
					immediate="true" />

				<br />
				<br />
				<p:panel header="Cadastro de Cliente" styleClass="size"
					footer="SIGLAS - Sistema de Gerenciamento de Laboratório de Análise de Solo">

					<p:tabView>
						<!-- Aba de dados pessoais  -->
						<p:tab title="Dados Pessoais">
							<br></br>

							<h:panelGrid columns="3" id="pn1">
								<h:outputText value="Nome: " />
								<p:inputText id="txtPesNome"
									value="#{pessoaBacking.pessoaSalvar.nome}" maxlength="45"
									size="50" required="true" requiredMessage="Nome em Branco" />

								<p:commandButton value="F4" icon="ui-icon-search"
									oncomplete="dlg.show()"
									actionListener="#{pessoaBacking.carregarPessoas}"
									update=":formPesquisa:tabelaPessoa" upprocess="@all"
									immediate="true" />

							</h:panelGrid>

							<h:panelGrid columns="2" id="pn2">

								<h:outputText value="Tipo Pessoa:(*)" />
								<p:selectOneRadio id="tipoPessoa" immediate="true"
									value="#{pessoaBacking.tipoPessoaSalvar}">
									<p:ajax update="cnpj,txtCpf"
										listener="#{pessoaBacking.trocarMascara}" />

									<f:selectItem itemLabel="Pessoa Física" itemValue="true" />
									<f:selectItem itemLabel="Pessoa Jurídica" itemValue="false" />

								</p:selectOneRadio>

								<h:outputText value="#{pessoaBacking.txtCpf}" id="txtCpf" />
								<p:inputMask id="cnpj"
									value="#{pessoaBacking.pessoaSalvar.cpf_cnpj}"
									mask="#{pessoaBacking.mascara}" required="true"
									requiredMessage="CPF/CNPJ Inválido">
									<p:ajax update=":formCadastro" event="blur"
										listener="#{pessoaBacking.carregarPessoa}"
										process=":formCadastro" />
									<f:validator validatorId="validador.CPFValidator" />
								</p:inputMask>

								<h:outputText value="Data Nascimento:(*)" />
								<p:calendar id="dataNascmimento" mask="99/99/9999"
									maxlength="10" pattern="dd/MM/yyyy" showButtonPanel="true"
									navigator="true" yearRange="c-90"
									value="#{pessoaBacking.pessoaSalvar.dataNascimento}"
									required="true" requiredMessage="Data Nascimento em branco" />


								<h:outputText value="Telefone:" />
								<p:inputMask mask="(99)9999-9999"
									value="#{pessoaBacking.pessoaSalvar.telefone}" />


								<h:outputText value="E-mail:" />
								<p:inputText value="#{pessoaBacking.pessoaSalvar.email}"
									maxlength="45" />
							</h:panelGrid>

							<br />

						</p:tab>

						<!-- ABA ENDEREÇO -->
						<p:tab title="Endereço" effect="fade" effectDuration="fast">

							<h:panelGrid columns="4" id="pn3">

								<h:outputText value="Logradouro:(*)" />
								<p:inputText value="#{pessoaBacking.enderecoSalvar.logadouro}"
									size="60" required="true" maxlength="45"
									requiredMessage="Logradouro em branco" />

								<h:outputText value="Nº:" />
								<p:inputText value="#{pessoaBacking.enderecoSalvar.numero}"
									size="10" maxlength="10" />

							</h:panelGrid>
							<h:panelGrid columns="2" id="pn4">
								<h:outputText value="Complemento:" />
								<p:inputText value="#{pessoaBacking.enderecoSalvar.complemento}"
									maxlength="45" size="60" />

								<h:outputText value="Bairro:" />
								<p:inputText value="#{pessoaBacking.enderecoSalvar.bairro}"
									maxlength="45" size="60" />

								<h:outputText value="Estado:(*)" />
								<p:selectOneMenu effect="drop" id="estado" required="true"
									requiredMessage="Estado inválido" height="300"
									value="#{pessoaBacking.estadoSalvar}">
									<f:selectItem itemLabel="Selecione um Estado" />
									<f:selectItems value="#{pessoaBacking.listaEstados}" var="e"
										itemValue="#{e.codigo}" itemLabel="#{e.nome} - #{e.sigla}" />
									<p:ajax listener="#{pessoaBacking.carregarCidades}"
										update="cidade" />

								</p:selectOneMenu>

								<h:outputText value="Cidade:(*)" />

								<p:selectOneMenu effect="drop" id="cidade" required="true"
									requiredMessage="Estado inválido"
									value="#{pessoaBacking.cidadeSalvar}">
									<f:selectItem itemLabel="Selecione uma Cidade" />
									<f:selectItems value="#{pessoaBacking.listaCidades}" var="c"
										itemLabel="#{c.nome}" itemValue="#{c.codigo}" />

								</p:selectOneMenu>

								<h:outputText value="CEP:" />
								<p:inputMask mask="99.999-999"
									value="#{pessoaBacking.enderecoSalvar.cep}" />
								<br />
							</h:panelGrid>

						</p:tab>
						<!-- ABA LOGIN -->
						<p:tab title="Permissão de Acesso">
							<h:panelGrid columns="2" id="pn5">
								<h:outputText value="Usuário:(*)" />
								<p:inputText id="user" maxlength="45"
									value="#{pessoaBacking.usuarioSalvar.usuario}" required="true"
									requiredMessage="Usuário inválido">
									<p:ajax event="blur" update="user" />
								</p:inputText>

								<h:outputText value="Senha:(*)" />

								<p:password id="pw" value="#{pessoaBacking.usuarioSalvar.senha}"
									feedback="true" promptLabel="Digite sua Senha" match="pw2"
									weakLabel="SENHA FRACA" goodLabel="SENHA MÉDIA"
									redisplay="true" strongLabel="SENHA FORTE"
									validatorMessage="Senhas Diferentes" />

								<h:outputText value="Confirmar Senha:(*)" />

								<p:password feedback="false" id="pw2" redisplay="true"
									required="true" requiredMessage="CONFIRMA"
									value="#{pessoaBacking.senhaSalvar}">
								</p:password>

							</h:panelGrid>
							<br />
						</p:tab>
						<p:tab title="Ficha Financeira">
							<p:dataTable paginator="true" rows="10"
								value="#{pessoaBacking.listaLancamentosDoCliente}" var="l"
								emptyMessage="Não consta nenhum lançamento para o cliente selecionado">
								<p:column headerText="Código">
									<div align="center">
										<h:outputText value="#{l.codigo}" />
									</div>
								</p:column>
								<p:column headerText="Data Emissão">
									<div align="center">
										<h:outputText value="#{l.dataEmissao}">
											<f:convertDateTime pattern="dd/MM/yyyy" />
										</h:outputText>
									</div>
								</p:column>
								<p:column headerText="Data Vencimento">
									<div align="center">
										<h:outputText value="#{l.dataVencimento}">
											<f:convertDateTime pattern="dd/MM/yyyy" />
										</h:outputText>
									</div>
								</p:column>
								<p:column headerText="Data do Pagamento">
									<div align="center">
										<h:outputText value="#{l.dataPagamento}">
											<f:convertDateTime pattern="dd/MM/yyyy" />
										</h:outputText>
									</div>
								</p:column>
								<p:column headerText="Espécie">
									<div align="center">
										<h:outputText value="#{l.especie}" />
									</div>
								</p:column>
								<p:column headerText="Valor Total">
									<div align="center">
										<h:outputText value="#{l.valorTotal}">
											<f:convertNumber currencySymbol="R$" groupingUsed="true"
												maxFractionDigits="2" type="currency" />
										</h:outputText>
									</div>
								</p:column>
								<p:column headerText="Status">
									<div align="center">
										<h:outputText value="#{l.status}" />
									</div>
								</p:column>
							</p:dataTable>
						</p:tab>
						<p:tab title="Solicitações">

							<p:dataTable paginator="true" rows="10"
								value="#{pessoaBacking.listaSolicitacaoDoCliente}" var="s"
								emptyMessage="Não consta nenhuma solicitação para o cliente selecionado">
								<p:column headerText="Código">
									<div align="center">
										<h:outputText value="#{s.codigo}" />
									</div>
								</p:column>
								<p:column headerText="Data de Entrada">
									<div align="center">
										<h:outputText value="#{s.dataEntrada}">
											<f:convertDateTime pattern="dd/MM/yyyy" />
										</h:outputText>
									</div>
								</p:column>
								<p:column headerText="Data de Saída">
									<div align="center">
										<h:outputText value="#{s.dataSaida}">
											<f:convertDateTime pattern="dd/MM/yyyy" />
										</h:outputText>
									</div>
								</p:column>
								<p:column headerText="Situação">
									<div align="center">
										<h:outputText value="#{s.status}" />
									</div>
								</p:column>
							</p:dataTable>

						</p:tab>

						<p:tab title="Foto" id="tabFto">
							<div align="center">
								<h:panelGrid columns="2">
									<p:fileUpload value="#{pessoaBacking.foto}" mode="simple"
										sizeLimit="100000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
									<p:commandButton value="Carregar"
										actionListener="#{pessoaBacking.selecionaImagem}" ajax="false"
										onclick="submit()" update="tabFto" />
								</h:panelGrid>
							</div>
						</p:tab>
					</p:tabView>
					<p:separator />
					<div align="center">
						<h:panelGrid columns="2">
							<p:commandButton value="Salvar"
								actionListener="#{pessoaBacking.salvar}"
								oncomplete="dlgEmail.show()" />
							<p:commandButton value="Cancelar" action="#{pessoaBacking.reset}"
								update=":formCadastro" />
						</h:panelGrid>
					</div>

				</p:panel>
			</h:form>


			<!-- PESQUISAR CLIENTE -->

			<p:dialog id="pesquisaCliente" widgetVar="dlg" appendToBody="true"
				modal="true" header="Pesquisar Clientes" closable="true"
				height="450" width="600" showEffect="clip" hideEffect="clip">
				<h:form prependId="false" id="formPesquisa">
					<p:dataTable var="p" value="#{pessoaBacking.listaPessoa}" rows="8"
						widgetVar="pessoaTabela" paginator="true" id="tabelaPessoa"
						emptyMessage="Nenhum registro foi encontrado, tente novamente!">
						<h:outputText value="Clientes Cadastrados" />

						<p:column filterBy="#{p.nome}">
							<f:facet name="header">
								<h:outputText value="Nome" />
							</f:facet>
							<h:outputText value="#{p.nome}" />
						</p:column>

						<p:column filterBy="#{p.cpf_cnpj}">
							<div align="center">
								<f:facet name="header">
									<h:outputText value="CPF / CNPJ" />
								</f:facet>
								<h:outputText value="#{p.cpf_cnpj}" />
							</div>
						</p:column>

						<p:column filterBy="#{p.dataNascimento}">
							<div align="center">
								<f:facet name="header">
									<h:outputText value="Data Nascimento" />
								</f:facet>
								<h:outputText value="#{p.getDataNascimentoFormatada()}" />
							</div>
						</p:column>

						<p:column>
							<f:facet name="header">
								<h:outputText value="Ações" />
							</f:facet>
							<div align="center">
								<h:panelGrid columns="2">
									<p:commandButton icon="ui-icon-pencil" onclick="dlg.hide()"
										update=":formCadastro" process="@this"
										actionListener="#{pessoaBacking.preparaAlteracao}">
										<f:setPropertyActionListener
											target="#{pessoaBacking.pessoaSelecionada}" value="#{p}" />
									</p:commandButton>

									<p:commandButton icon="ui-icon-close" immediate="true"
										ajax="true" process="@this" onclick="dlgDelete.show()">
										<f:setPropertyActionListener
											target="#{pessoaBacking.pessoaSelecionada}" value="#{p}" />
									</p:commandButton>

								</h:panelGrid>
							</div>
						</p:column>
					</p:dataTable>
				</h:form>
			</p:dialog>


			<p:dialog id="confirmaDelete" widgetVar="dlgDelete"
				header="Deletar Registro" closable="true" width="230"
				resizable="false" showEffect="clip" hideEffect="clip">
				<h:form>
					<div align="center">
						<h:outputText value="Deseja realmente excluir esse registro?" />
						<h:panelGrid columns="2">
							<p:commandButton value="Sim" onsuccess="dlgDelete.hide()"
								actionListener="#{pessoaBacking.delete}"
								update=":formPesquisa:tabelaPessoa" process="@all"
								immediate="true" />
							<p:commandButton value="Não" onclick="dlgDelete.hide()" />
						</h:panelGrid>
					</div>
				</h:form>
			</p:dialog>



			<p:dialog id="enviarEmail" widgetVar="dlgEmail"
				header="Enviar E-mail" closable="true" width="230" resizable="false"
				showEffect="clip" hideEffect="clip">
				<h:form>
					<div align="center">
						<h:outputText value="Enviar confirmação de cadastro via E-mail?" />
						<h:panelGrid columns="2">
							<p:commandButton value="Sim" onsuccess="dlgEmail.hide()"
								actionListener="#{pessoaBacking.enviarEmail}"
								update=":formCadastro" process="@all" immediate="true" />
							<p:commandButton value="Não" update=":formCadastro"
								actionListener="#{pessoaBacking.reset}"
								onclick="dlgEmail.hide()" />
						</h:panelGrid>
					</div>
				</h:form>
			</p:dialog>

		</ui:define>
	</ui:decorate>
</h:body>
</html>